﻿using WeDonekRpc.Helper.Validate;

namespace Basic.FlowRemoteModel.FlowNode.Model
{
    public class FlowNodeIntoOut
    {
        /// <summary>
        /// 节点进入的条件
        /// </summary>
        [EnumValidate("flow.node.into.condition.error", typeof(FlowNodeIntoCondition))]
        public FlowNodeIntoCondition IntoCondition
        {
            get;
            set;
        }
        /// <summary>
        /// 节点进入的最小通过人数
        /// </summary>
        public short? IntoMinPassNum
        {
            get;
            set;
        }

        public long? IntoWaitNodeId
        {
            get;
            set;
        }
        /// <summary>
        /// 节点进入条件
        /// </summary>
        public IntoFormula[] IntoFormula
        {
            get;
            set;
        }
        /// <summary>
        /// 节点下发流程走向策略
        /// </summary>
        [EnumValidate("flow.node.out.policy.error", typeof(FlowNodeOutPolicy))]
        public FlowNodeOutPolicy OutPolicy
        {
            get;
            set;
        }
        /// <summary>
        /// 出方向条件
        /// </summary>
        [EnumValidate("flow.node.out.condition.error", typeof(FlowOutCondition))]
        public FlowOutCondition OutCondition
        {
            get;
            set;
        }
        /// <summary>
        /// 出方向子流程最小通过数
        /// </summary>
        public short? OutMinPassNum
        {
            get;
            set;
        }
        public long? OutWaitNodeId
        {
            get;
            set;
        }
        /// <summary>
        /// 是否等待通过后继续
        /// </summary>
        public bool OutIsWaitPass
        {
            get;
            set;
        }
        /// <summary>
        /// 节点出时子节点审核未通过时的处理方式
        /// </summary>
        [EnumValidate("flow.node.no.pass.opt.method.error", typeof(FlowOutNoPassOptMethod))]
        public FlowOutNoPassOptMethod OutNoPassOpt
        {
            get;
            set;
        }
        /// <summary>
        /// 节点启动方式
        /// </summary>
        [EnumValidate("flow.node.start.mode.error", typeof(FlowNodeStartMode))]
        public FlowNodeStartMode StartMode
        {
            get;
            set;
        }
        public long? StartFormId
        {
            get;
            set;
        }
        public long? StartColId
        {
            get;
            set;
        }
        /// <summary>
        /// 延迟时间
        /// </summary>
        public int? DelayTime
        {
            get;
            set;
        }
    }
}
